home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD018b.dsk / ADD.DRILL.bas < prev    next >
BASIC Source File  |  2003-06-12  |  9KB  |  272 lines

  1. 1  REM  ADDITION DRILL AND PRACTICE
  2. 2  REM  COPYRIGHT (C) 1982 - JOHN BEIDLER
  3. 3  REM   MAY BE DUPLICATED FOR
  4. 4  REM  EDUCATIONAL PURPOSES BUT
  5. 5  REM  NOT FOR RESALE
  6. 10  DIM A(10),P(10,10)
  7. 15  GOSUB 4000
  8. 20  GOSUB 7000: REM  INITIALIZE 
  9. 30  GOSUB 2000: REM  MAIN PROCEDURE
  10. 40  GOSUB 4000: REM  MARQUE WRAPUP
  11. 50  PRINT D$;"RUN START.DRILLS"
  12. 99  END 
  13. 300  REM  FILE THE PROBLEM
  14. 305 X5 = X5 +1
  15. 310  GOSUB 1100
  16. 320  PRINT "N": PRINT P
  17. 330  FOR I5 = 0 TO N0 -1
  18. 335  FOR J5 = 0 TO S0 -1
  19. 340  PRINT P(I5,J5)
  20. 350  NEXT J5: NEXT I5
  21. 390  GOSUB 1150
  22. 399  RETURN 
  23. 400  REM  ERROR IN CARRY
  24. 402  GOSUB 7150
  25. 405  IF R0 = 0  THEN E(0) = E(0) +1
  26. 406  IF R0 < >0  THEN E(2) = E(2) +1
  27. 407  VTAB 12 -N0 -3: HTAB 10: INVERSE : PRINT "THAT IS WRONG";: NORMAL 
  28. 410  IF X0 = 0  THEN X0 = 1: GOSUB 300
  29. 420  GOSUB 1100
  30. 430  PRINT "C": PRINT I +1: PRINT A9
  31. 440  GOSUB 1150
  32. 442  VTAB 12 -N0 -3: HTAB 10: PRINT "              "
  33. 445  VTAB 12 -N0 -1: HTAB 20 +S0 -2 *I -2
  34. 450  IF R0 = R9  THEN A9 = P(N0,I +1): GOTO 660
  35. 455  VTAB 12 -N0 -3: HTAB 10
  36. 465  NORMAL : HTAB 10: PRINT "    TRY AGAIN";: GOSUB 1200
  37. 470  HTAB 10: PRINT "              "
  38. 498 R0 = R0 +1
  39. 499  GOTO 639
  40. 500  REM  ERROR IN ANSWER
  41. 501  GOSUB 7150
  42. 505  IF R0 = 0  THEN E(1) = E(1) +1
  43. 506  IF R0 < >0  THEN E(3) = E(3) +1
  44. 507  VTAB 12 +N0 +3: HTAB 10: INVERSE : PRINT "THAT IS WRONG";: NORMAL 
  45. 510  IF X0 = 0  THEN X0 = 1: GOSUB 300
  46. 520  GOSUB 1100
  47. 530  PRINT "A": PRINT I: PRINT A9
  48. 540  GOSUB 1150
  49. 542  VTAB 12 +N0 +3: HTAB 10: PRINT "              "
  50. 545  VTAB 12 +N0 +1: HTAB 20 +S0 -2 *I
  51. 550  IF R0 = R9  THEN A9 = A(I): GOTO 633
  52. 555  VTAB 12 +N0 +3: HTAB 10
  53. 565  NORMAL : HTAB 10: PRINT "    TRY AGAIN";: GOSUB 1200
  54. 570  HTAB 10: PRINT "             "
  55. 598 R0 = R0 +1
  56. 599  GOTO 615
  57. 600  REM  PROBLEM DRILL PROCEDURE
  58. 605 X0 = 0: REM  ERROR THIS PROBLEM
  59. 610  FOR I = 0 TO S0
  60. 611  IF (I = S0)  AND (A(I) = 0)  THEN 680
  61. 612 R0 = 0
  62. 615  VTAB 12 +N0 +1: HTAB 20 +S0 -2 *I
  63. 620  GET A$: IF (A$ <"0")  OR (A$ >"9")  THEN 620
  64. 625 A9 =  ASC(A$) - ASC("0")
  65. 630  IF A9 < >A(I)  THEN 500
  66. 632  GOSUB 7100
  67. 633 R0 = 0
  68. 635  PRINT A9: IF C$ = "N"  THEN 680
  69. 636  IF I = S0  THEN 680
  70. 637  IF (I = S0 -1)  AND (P(N0,S0) = 0)  THEN 680
  71. 639  VTAB 12 -N0 -1: HTAB 20 +S0 -2 *I -2
  72. 640  GET A$: IF (A$ <"0")  OR (A$ >"9")  THEN 640
  73. 650 A9 =  ASC(A$) - ASC("0")
  74. 655  IF A9 < >P(N0,I +1)  THEN 400
  75. 656  GOSUB 7100
  76. 660  PRINT A9
  77. 680  NEXT I
  78. 698  GOSUB 1200
  79. 699  RETURN 
  80. 700  REM  DRILL INITIALIZATION
  81. 705 X5 = 0
  82. 710  FOR I = 0 TO 4:E(I) = 0: NEXT I
  83. 799  RETURN 
  84. 800  REM  SET UP A PROBLEM
  85. 801  HOME : VTAB 2: HTAB 1: PRINT "PROBLEM NO. ";P;" OF ";M9;: HTAB 30: PRINT "ADDITION"
  86. 803  VTAB 23: PRINT "ENTER THE DIGIT INDICATED BY THE ";: FLASH : PRINT " ";: NORMAL 
  87. 805 P(N0,0) = 0
  88. 810  FOR J = 0 TO S0 -1
  89. 815 A(J) = P(N0,J)
  90. 820  FOR I = 0 TO N0 -1
  91. 830 P(I,J) =  INT(10 * RND(1))
  92. 835 A(J) = A(J) +P(I,J)
  93. 840  NEXT I
  94. 845 Q =  INT(A(J)/10)
  95. 850 A(J) = A(J) -10 *Q
  96. 860 P(N0,J +1) = Q
  97. 865  NEXT J
  98. 870 A(S0) = Q
  99. 900  REM  DISPLAY
  100. 905  FOR I = 0 TO N0 -1
  101. 906  VTAB 12 +N0 -1 -2 *I
  102. 910  FOR J = 0 TO S0 -1
  103. 912  HTAB 20 +S0 -2 *J
  104. 915  PRINT P(I,J);
  105. 920  NEXT J
  106. 921  IF S0 = 1  THEN 929
  107. 922  FOR J = S0 -1 TO 1  STEP  -1: HTAB 20 +S0 -2 *J
  108. 924  IF P(I,J) < >0  THEN 929
  109. 925  PRINT " ";: NEXT J
  110. 929  NEXT I
  111. 930  VTAB 12 +N0: HTAB 20 -S0 -1
  112. 935  FOR J = 0 TO S0: PRINT "--";: NEXT J
  113. 939  IF C$ = "N"  THEN 945
  114. 940  VTAB 12 -N0: HTAB 20 -S0 -1
  115. 942  FOR J = 0 TO S0: PRINT "--";: NEXT J
  116. 944  VTAB 12 -N0 -1: HTAB 20 -S0 -7: PRINT "CARRY"
  117. 945  VTAB 12 +N0 +1: HTAB 20 -S0 -7: PRINT "ANSWER"
  118. 950  VTAB 12 +N0 -1: HTAB 20 -S0 -1: PRINT "+"
  119. 999  RETURN 
  120. 1000  REM  DRILL AND PRACTICE
  121. 1005  GOSUB 700: REM  INIT DRILL
  122. 1010  FOR P = 1 TO M9
  123. 1015 X3 =  FRE(0): REM  HOUSE CLEANING
  124. 1020  GOSUB 800: REM  SET UP A PROBLEM
  125. 1030  GOSUB 600: REM  GO THROUGH A PROBLEM
  126. 1040  NEXT P
  127. 1099  RETURN 
  128. 1100  REM  OPEN/APPEND PROCEDURE
  129. 1105  PRINT 
  130. 1110  PRINT D$;"APPEND ";N$
  131. 1120  PRINT D$;"WRITE ";N$
  132. 1129  RETURN 
  133. 1150  REM  CLOSE FILE PROCEDURE
  134. 1151  PRINT 
  135. 1155  PRINT D$;"CLOSE ";N$
  136. 1159  RETURN 
  137. 1200  REM  PAUSE PROCEDURE
  138. 1210  FOR Z7 = 0 TO 1500: NEXT Z7
  139. 1219  RETURN 
  140. 2000  REM  MAIN PROCEDURE
  141. 2010  GOSUB 2800: REM  GET STUDENT NAME AND SET UP DATA FILE
  142. 2020  GOSUB 1000: REM  DRILL PROCEDURE
  143. 2030  GOSUB 3000: REM  STUDENT WRAPUP
  144. 2040  HOME : VTAB 10: PRINT "IS THEIR ANOTHER STUDENT TO TAKE THIS"
  145. 2045  PRINT "DRILL (Y/N)? ";: GET A$: PRINT A$: HOME 
  146. 2050  IF A$ = "Y"  THEN 2000
  147. 2055  IF A$ < >"N"  THEN 2040
  148. 2099  RETURN 
  149. 2800 : REM  STUDENT SET UP
  150. 2810  HOME : VTAB 10: PRINT "PLEASE ENTER YOUR NAME"
  151. 2812  HTAB 10: PRINT "THEN PRESS 'RETURN'": PRINT 
  152. 2815  INPUT N$
  153. 2820  PRINT D$;"OPEN ";N$
  154. 2822  PRINT D$;"WRITE ";N$
  155. 2823  PRINT N$
  156. 2824  PRINT M9: PRINT N0: PRINT S0
  157. 2826  PRINT D$;"CLOSE ";N$
  158. 2830  FOR I = 0 TO 4:E(I) = 0: NEXT I
  159. 2899  RETURN 
  160. 3000  REM  STUDENT WRAPUP
  161. 3010  HOME : VTAB 3: PRINT "DRILL RESULTS FOR ";N$: PRINT : PRINT 
  162. 3011  PRINT D$;"OPEN ";N$;".FINAL"
  163. 3012  PRINT D$;"WRITE ";N$;".FINAL"
  164. 3014  PRINT "F,";M9
  165. 3016  PRINT X5: FOR K2 = 0 TO 3: PRINT E(K2): NEXT K2
  166. 3019  PRINT D$;"CLOSE ";N$;".FINAL"
  167. 3020  PRINT M9 -X5;" PROBLEMS CORRECT OUT OF ";M9: PRINT 
  168. 3030  PRINT "THAT'S "; INT(100 *(M9 -X5)/M9);"%": PRINT 
  169. 3040  PRINT : PRINT : PRINT 
  170. 3050  PRINT "ERRORS    FIRST     RETRY ": PRINT 
  171. 3060  PRINT "ANSWER";: HTAB 13: PRINT E(1);: HTAB 23: PRINT E(3): PRINT 
  172. 3070  PRINT "CARRY ";: HTAB 13: PRINT E(0);: HTAB 23: PRINT E(2): PRINT 
  173. 3080  GOSUB 1200: PRINT : PRINT 
  174. 3090  PRINT "ANY KEY TO CONTINUE";: GET A$: PRINT A$: HOME 
  175. 3099  RETURN 
  176. 4000  REM  MARQUE
  177. 4001  HOME 
  178. 4010  VTAB 2:A$ = "ARITHMETIC DRILL AND PRACTICE": GOSUB 4100
  179. 4020  VTAB 5:A$ = "COPYRIGHT (C) 1982 - J. BEIDLER": GOSUB 4100
  180. 4025  VTAB 7:A$ = "ALL RIGHTS RESERVED": GOSUB 4100
  181. 4029  GOSUB 1200
  182. 4090  GOSUB 1200: GOSUB 1200: GOSUB 1200
  183. 4099  RETURN 
  184. 4100  REM  CENTER ON GIVEN LINE
  185. 4110 X3 =  LEN(A$)
  186. 4120  HTAB 20 -(X3/2)
  187. 4130  PRINT A$
  188. 4199  RETURN 
  189. 7000  REM   SOUND ROUTINE
  190. 7001  GOSUB 8000
  191. 7005  REM   POKE6,TONE:POKE 7,TIME:CALL768
  192. 7010  POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7: POKE 776,240: POKE 777,8:
  193. 7020  POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,3: POKE 786,96
  194. 7030  RETURN 
  195. 7100  REM  SOUND CORRECT
  196. 7105  IF S$ < >"Y"  THEN  RETURN 
  197. 7110  POKE 6,15: POKE 7,30: CALL 768: RETURN 
  198. 7150  REM  SOUND ERROR
  199. 7155  IF S$ < >"Y"  THEN  RETURN 
  200. 7160  POKE 6,150: POKE 7,50: CALL 768: RETURN 
  201. 7800  REM  TEACHER SET UP
  202. 7809  VTAB 8
  203. 7810  PRINT "NUMBER OF DIGITS PER NUMBER (1-8)? ";
  204. 7811  GET A$: PRINT A$: IF (A$ <"1")  OR (A$ >"8")  THEN 7810
  205. 7812 S0 =  ASC(A$) - ASC("0")
  206. 7814  PRINT 
  207. 7815  PRINT "NUMBER OF NUMBERS TO BE ADDED (2-5) ?";
  208. 7818  GET A$: PRINT A$: IF (A$ <"2")  OR (A$ >"5") GOTO 7815
  209. 7820 N0 =  ASC(A$) - ASC("0")
  210. 7821  PRINT 
  211. 7822  PRINT "NUMBER OF RETRIES PER DIGIT (0-9)? ";
  212. 7823  GET A$: PRINT A$: IF (A$ <"0")  OR (A$ >"9") GOTO 7823
  213. 7824 R9 =  ASC(A$) - ASC("0")
  214. 7825  PRINT 
  215. 7826  INPUT "PROBLEMS PER DRILL (THEN 'RETURN')? ";M9
  216. 7829  PRINT 
  217. 7830  PRINT "REQUIRE CARRY ENTRIES (Y/N)? ";
  218. 7832  GET C$: PRINT C$;
  219. 7834  IF (C$ < >"Y")  AND (C$ < >"N")  THEN  HTAB 1: GOTO 7830
  220. 7835  PRINT : PRINT : PRINT "AUDIO FEEDBACK (Y/N)? ";: GET S$: PRINT S$;
  221. 7837  IF (S$ < >"Y")  AND (S$ < >"N")  THEN  HTAB 1: GOTO 7835
  222. 7840  PRINT : PRINT 
  223. 7865  INVERSE : PRINT "INFORMATION CORRECT (Y/N)?";: NORMAL 
  224. 7868  GET A$: PRINT A$;
  225. 7875  IF A$ = "Y"  THEN  PRINT : RETURN 
  226. 7878  IF A$ < >"N"  THEN  HTAB 1: GOTO 7865
  227. 7880  HOME : GOSUB 7900: GOTO 7800
  228. 7899  RETURN 
  229. 7900  REM  BANNER
  230. 7910  INVERSE : FOR I = 2 TO 6
  231. 7920  VTAB I: FOR J = 8 TO 31
  232. 7930  HTAB J: PRINT " ";: NEXT J: NEXT I
  233. 7940  PRINT 
  234. 7950 A$ = "ADDITION DRILL": VTAB 3: HTAB 13: PRINT A$
  235. 7960 A$ = "TEACHER INITIALIZATION": VTAB 5: HTAB 9: PRINT A$
  236. 7995  NORMAL 
  237. 7999  RETURN 
  238. 8000  REM   TEACHER INITIALIZATION
  239. 8005 D$ = "<CTRL-D>": REM  CNTL-D
  240. 8010  HOME 
  241. 8020  GOSUB 7900: REM   HEADLINE
  242. 8030  GOSUB 7800: REM   SET UP
  243. 8099  RETURN 
  244. 9000  REM  DATA DIRECTORY
  245. 9001  REM  A$ - GEN'L PURPOSE USE IN GET
  246. 9002  REM  A(7) - ANSWER ARRAY
  247. 9003  REM  C(7) - CARRY ARRAY
  248. 9004  REM  D$ - CNTL-D
  249. 9008  REM  E(4) - ERROR COUNTS 0-CARRY, 1-ANSWER, 2-CARRY RETRY, 3-ANSWER RETRY
  250. 9010  REM  M9 - NO. OF PROBLEMS PER DRILL
  251. 9019  REM  N$ - STUDENT7S NAME
  252. 9020  REM  N0 - NO. OF NUMBERS TO ADD PER PROBLEM
  253. 9024  REM  P - COUNT OF PROBLEM NUMBER
  254. 9025  REM  P(6,7) - 2-D ARRAY OF THE PROBLEM
  255. 9030  REM  S0 - SIZE OF EACH NUMBER
  256. 20000  REM  SYSTEM CHART
  257. 20010  REM 
  258. 20020  REM   1 - MAIN DRIVER
  259. 20030  REM      7000 - INITIALIZE
  260. 20040  REM          7900 - BANNER
  261. 20050  REM          7800 - TEACHER INPUT
  262. 20060  REM       2000 - MAIN PROCESS
  263. 20070  REM          2800 - INIT STUDENT FILE
  264. 20080  REM          1000 - DRILL PROCEDURE
  265. 20090  REM             700 - INIT DRILL VARIABLES
  266. 20100  REM             800 - MAKE UP AND PRINT THE PROBLEM
  267. 20110  REM             600 - DRILL LOOP
  268. 20120  REM                500 - ERROR IN ANSWER
  269. 20130  REM                   300 - PROBLEM TO FILE
  270. 20140  REM                400 - ERROR IN CARRY
  271. 20150  REM                   300 - PROBLEM TO FILE
  272. 20160  REM